home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / jovept2.arc / TTOUT.C < prev    next >
Text File  |  1985-05-30  |  3KB  |  148 lines

  1. /* ttout.c */
  2.  
  3. /* JOVE/MSDOS. K. Mitchum 1/85 */
  4. /* Modifications for personal use only. */
  5. /* original code J. Payne LSRHS 5/83 */
  6. /* Ken Mitchum */
  7. /* University of Pittsburgh */
  8. /* Decision Systems Laboratory */
  9.  
  10. /*
  11.    Jonathan Payne at Lincoln-Sudbury Regional High School 5-25-83
  12.  
  13.    jove_ttout.c
  14.  
  15.    Deals with output to the terminal, setting up the amount of characters
  16.    to be buffered depending on the output baud rate.  Why it's in a 
  17.    separate file I don't know ... */
  18.  
  19. #include "jove.h"
  20. #include "term.h"
  21.  
  22. extern int CheckTime;    /* screen.c */
  23.  
  24. #ifdef UNIX
  25. IOBUF    termout;
  26. #endif
  27.  
  28.  
  29. outc(c)
  30. register int    c;
  31. {
  32.     outchar(c);
  33. }
  34.  
  35. /* Put a string with padding */
  36.  
  37. putpad(str, lines)
  38. char    *str;
  39. {
  40.  
  41.  
  42. #ifdef TERMCAP
  43.     tputs(str, lines, outc);
  44.  
  45. #else
  46.     do {
  47.         outchar(*str);
  48.     }while (*(++str));
  49.  
  50.  
  51.  
  52. #endif
  53. }
  54.  
  55. /*--------------------------o.s. dependent------------------------*/
  56.  
  57. #ifdef UNIX
  58.  
  59.  
  60. /* Flush the output, and check for more characters.  If there are
  61.  * some, then return to main, to process them, aborting redisplay.
  62.  */
  63.  
  64.  
  65. flushout(x, p)
  66. IOBUF    *p;
  67. {
  68.     register int    n;
  69.  
  70.     CheckTime = 1;
  71.     if ((n = p->io_ptr - p->io_base) > 0) {
  72.         ignore(write(p->io_file, p->io_base, n));
  73.         if (p == &termout) {
  74.             CheckTime = BufSize;
  75.             p->io_cnt = BufSize;
  76.         } else
  77.             p->io_cnt = BUFSIZ;
  78.         p->io_ptr = p->io_base;
  79.     }
  80.     if (x >= 0)
  81.         Putc(x, p);
  82. }
  83.  
  84. /* Determinte the number of characters to buffer at each
  85.  * baud rate.  The lower the number, the quicker the
  86.  * response when new input arrives.  Of course the lower
  87.  * the number, the more prone the program is to stop in
  88.  * output.  Decide what matters most to you.
  89.  * This sets the int BufSize to the right number or chars,
  90.  * allocates the buffer, and initiaizes `termout'.
  91.  */
  92.  
  93. settout()
  94. {
  95.     static int speeds[] = {
  96.         1,    /* 0    */
  97.         1,    /* 50    */
  98.         1,    /* 75    */
  99.         1,    /* 110    */
  100.         1,    /* 134    */
  101.         1,    /* 150    */
  102.         1,    /* 200    */
  103.         1,    /* 300    */
  104.         1,    /* 600    */
  105.         5,    /* 1200 */
  106.         15,    /* 1800    */
  107.         30,    /* 2400    */
  108.         60,    /* 4800    */
  109.         120,    /* 9600    */
  110.         0,    100,    /* EXTA    */
  111.         0,    120    /* EXT    */
  112.     };
  113.  
  114. /*    termout.io_cnt = BufSize = CheckTime = speeds[ospeed] * max(LI / 24, 1);
  115.     termout.io_base = termout.io_ptr = emalloc(BufSize);
  116.     termout.io_flag = 0;
  117.     termout.io_file = 1;
  118.  
  119.     termout.io_bufsiz = BufSize;
  120. */
  121.  
  122.     termout.io_cnt = BufSize = CheckTime = 4096;
  123.     termout.io_base = termout.io_ptr = emalloc(BufSize);
  124.     termout.io_flag = 0;
  125.     termout.io_file = 1;    /* Standard output */
  126.  
  127.     termout.io_bufsiz = BufSize;
  128.  
  129.  
  130. }
  131.  
  132.  
  133. #else
  134.  
  135. /* clone */
  136.  
  137. flushout()
  138. {
  139. }
  140.  
  141. settout()
  142. {
  143. }
  144.  
  145. #endif
  146.  
  147. /* end */
  148.